home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / clipper / telword1.zip / TELWORD.PRG < prev    next >
Text File  |  1994-05-04  |  7KB  |  170 lines

  1. ********************************************************************
  2. *: COMMAND FILE telWord.PRG                                        *
  3. *: Author: LOUIS HEMMI (STARSHIP LATIMER AND TORTILLA FACTORY)     *
  4. *:         309 Avondale - Houston, Texas 77006                     *
  5. *:         713/526-4530                                            *
  6. *:                                                                 *
  7. *: Date:                                                           *
  8. *: 06/89 - program started                                         *
  9. *: 05/94 - Clipper 5 syntax (05-04-94 10:13am)                     *
  10. *:                                                                 *
  11. *: System: LOUPHONE                                                *
  12. *: Purpose:                                                        *
  13. *: USED TO GENERATE THE POSSIBLE COMBINATIONS OF THE LETTERS       *
  14. *: ASSOCIATED WITH NUMBERS ON THE TELEPHONE KEYPAD.                *
  15. *: NOTE: THE LETTERS 'Q' AND 'Z' ARE NOT INCLUDED on the telephone *
  16. *:       keypad, and the numbers '1' & '0' are not translated.     *
  17. *:                                                                 *
  18. *: There are 15,309 iterations to yield 2,187 possible combinations*
  19. *:                                                                 *
  20. *: There are no duplicate combinations, except for those using     *
  21. *:  0 or 1, since there are six occurrences of these two           *
  22. *:  "characters." It would be easy to save these to a .dbf, but    *
  23. *:  what I do is print to a text file, and scroll through to find  *
  24. *:  interesting combinations. A SOUNDEX approach might make this   *
  25. *:  easier to use, but I doubt that there is a way to automate the *
  26. *:  selection process.                                             *
  27. *:                                                                 *
  28. *: Suggestions for improvements would be greatly appreciated !     *
  29. *:                                                                 *
  30. ********************************************************************
  31. FUNCTION MAIN
  32.   LOCAL GETLIST
  33.   SETCOLOR("W+/B,GR+,B")
  34.   CLEAR
  35.   do while lastkey()#27
  36.     interface()
  37.     clear
  38.   enddo
  39. return(nil)
  40. *-----------------------------------------------------------*
  41. FUNCTION TELWORD(In_Phone)
  42.   LOCAL GETLIST
  43.   LOCAL J                                        // COUNTER
  44.   LOCAL nPROCESSED                               // COUNT TOTAL 7-LETTER COMBINATIONS
  45.   LOCAL cWord [7,1]                              // component of a single word
  46.   LOCAL cCurWord                                 // current 'word'
  47.   LOCAL I[7,1]                                   // COUNTER
  48.   LOCAL X[10,1]                                  // THREE CHARACTERS ASSOCIATED WITH EACH NUMERAL
  49.   LOCAL KeyLetters := "000111ABCDEFGHIJKLMNOPRSTUVWXY" // LETTERS ON TELEPHONE KEYPAD
  50.   LOCAL nPOSITION := 1
  51.   nPROCESSED := 0
  52.   ****IN_PHONE := "5264530"                      // USER-INPUT TELEPHONE NUMBER TO PROCESS
  53.   * Set up the array of three-character trios for each numeral
  54.   if empty(In_Phone)
  55.   return(0)                                      // value of nProcessed
  56. endif
  57. FOR J = 1 TO 10
  58.   X[J]=SUBS(KeyLetters,nPOSITION,3)
  59.   nPOSITION := nPOSITION + 3
  60. NEXT J
  61.  
  62. FOR I[1] = 1 TO 3
  63.   FOR I[2] = 1 TO 3
  64.     FOR I[3] = 1 TO 3
  65.       FOR I[4] = 1 TO 3
  66.         FOR I[5] = 1 TO 3
  67.           FOR I[6] = 1 TO 3
  68.             FOR I[7] = 1 TO 3
  69.               FOR J = 1 TO 7
  70.                 if nextkey()=27 // allow processing abort
  71.                 return (nil)
  72.               endif
  73.               ?? SUBS(X[VAL(SUBS(In_Phone,J,1))+1],I[J],1)
  74.               cWord[J] := SUBS(X[VAL(SUBS(In_Phone,J,1))+1],I[J],1)
  75.             NEXT J
  76. /*                  nProcessed := nProcessed + 1
  77.                     cCurWord := cWord[1]+;
  78.                     cWord[2] +;
  79.                     cWord[3] +;
  80.                     cWord[4] +;
  81.                     cWord[5] +;
  82.                     cWord[6] +;
  83.                     cWord[7]
  84.                     altd()
  85.                     with this section, you could save each combination
  86.                     to a record, provided you had a database with a
  87.                     character field of length 7. I saw no need for my
  88.                     purposes [Louis Hemmi]
  89. */
  90.             ?? SPACE(2)
  91.           NEXT I[7]
  92.           ?? SPACE(2)
  93.         NEXT I[6]
  94.         ?                   &&                   //// HERE'S THE CARRIAGE RETURN
  95.       NEXT I[5]
  96.     NEXT I[4]
  97.   NEXT I[3]
  98. NEXT I[2]
  99. NEXT I[1]
  100. RETURN (nil)
  101. ** end of function telword
  102. ** end of function telword
  103. *------------------------------------------------------------------*
  104. FUNCTION INTERFACE
  105.   LOCAL GETLIST
  106.   LOCAL mDEST,DONE,In_Phone,mFILE
  107.   local nProcessed                               // returned from telnum(In_Phone)
  108.   DO WHILE lastkey() # 27
  109.     CLEAR
  110.     mDEST := 'S'
  111.     In_Phone := space(7)
  112.     @02,10 TO 12,69 DOUBLE
  113.     @04,14 SAY "      During Processing, Hit <ESC> To Interrupt     "
  114.     @23,00 SAY PADC(" telWord: Give Me a Number, I'll Give You 2,187 Words ",MaxCol(),"░")
  115.     @06,14 SAY "Please input a 7-digit telephone number ═ "  GET In_Phone PICTURE "#######"
  116.     @08,14 SAY "TO P)rinter S)creen F)ile Q)uit ? " GET MDEST  PICTURE "@!" VALID (MDEST $ "PSFQ")
  117.     READ
  118.     *
  119.     IF MDEST = "Q"
  120.       In_Phone := ""
  121.       EXIT
  122.     ENDIF                                        && MDEST = "Q"
  123.     *
  124.     if lastkey()=27
  125.       exit
  126.     endif
  127.     IF ( VAL(In_Phone) = 0 .AND. LASTKEY() # 27 .AND. NEXTKEY() # 27 )  .OR. ( LEN(TRIM(In_Phone)) # 7 )
  128.       tone(2000,3)
  129.       @23,00 SAY SPACE(MaxCol())
  130.       @23,00 SAY padc(" INVALID ENTRY ",MaxCol())
  131.       INKEY(0)
  132.       LOOP
  133.     ENDIF                                        && ( VAL(In_Phone) = 0 .AND. LASTKEY() # 27
  134.     IF VAL(In_Phone) = 0 .AND. (LASTKEY() = 27 .OR. NEXTKEY() = 27)
  135.       ? CHR(7)
  136.       @23,00 SAY SPACE(MaxCol())
  137.       @23,00 SAY padc(" TRY AGAIN ",MaxCol())
  138.       INKEY(2)
  139.       LOOP
  140.     ENDIF                                        && VAL(In_Phone) = 0 .AND. (LASTKEY() = 27
  141.     *
  142.     DO CASE
  143.       *
  144.     CASE MDEST = "P"
  145.       SET PRINTER TO
  146.       SET DEVICE TO PRINT
  147.       SET PRINT ON
  148.       ? "Report for number->"+In_Phone
  149.       ?
  150.       *
  151.     CASE MDEST = 'F'
  152.       STORE "telWord.TXT" +SPACE(34) TO MFILE
  153.       @14,00 SAY "Enter Destination Filename ══ " GET MFILE
  154.       READ
  155.       SET ALTERNATE TO (mFILE)  &&               //// SINCE WE'RE NOT USING @SAYS
  156.       SET ALTERNATE ON          &&               //// SINCE WE'RE NOT USING @SAYS
  157.       ? "Report for number->"+In_Phone
  158.       ?
  159.       *
  160.     ENDCASE
  161.  
  162.     telword(In_Phone)
  163.   enddo
  164.  
  165.   SET ALTERNATE OFF
  166. return(nil)
  167. *
  168. * END OF COMMAND FILE telWord.PRG
  169. * END OF COMMAND FILE telWord.PRG
  170.